package com.hzit.manager.service.impl;

import java.util.List;

import com.alibaba.fastjson.JSON;
import com.hzit.manager.mapper.ItemMapper;
import com.ruoyi.system.api.domain.Goods;
import com.ruoyi.system.api.domain.Item;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.hzit.manager.mapper.GoodsMapper;
import com.hzit.manager.service.IGoodsService;

/**
 * 商品审核Service业务层处理
 * 
 * @author hbxfwf
 * @date 2024-03-07
 */
@Service
public class GoodsServiceImpl implements IGoodsService 
{
    @Autowired
    private GoodsMapper goodsMapper;
    @Autowired
    private RabbitTemplate rabbitTemplate;
    @Autowired
    private ItemMapper itemMapper;

    /**
     * 查询商品审核
     * 
     * @param id 商品审核主键
     * @return 商品审核
     */
    @Override
    public Goods selectGoodsById(Long id)
    {
        return goodsMapper.selectGoodsById(id);
    }

    /**
     * 查询商品审核列表
     * 
     * @param goods 商品审核
     * @return 商品审核
     */
    @Override
    public List<Goods> selectGoodsList(Goods goods)
    {
        return goodsMapper.selectGoodsList(goods);
    }

    /**
     * 新增商品审核
     * 
     * @param goods 商品审核
     * @return 结果
     */
    @Override
    public int insertGoods(Goods goods)
    {
        return goodsMapper.insertGoods(goods);
    }

    /**
     * 修改商品审核
     * 
     * @param goods 商品审核
     * @return 结果
     */
    @Override
    public int updateGoods(Goods goods)
    {
        return goodsMapper.updateGoods(goods);
    }

    /**
     * 批量删除商品审核
     * 
     * @param ids 需要删除的商品审核主键
     * @return 结果
     */
    @Override
    public int deleteGoodsByIds(Long[] ids)
    {
        return goodsMapper.deleteGoodsByIds(ids);
    }

    /**
     * 删除商品审核信息
     * 
     * @param id 商品审核主键
     * @return 结果
     */
    @Override
    public int deleteGoodsById(Long id)
    {
        return goodsMapper.deleteGoodsById(id);
    }

    // 商品审核
	@Override
	public int goodsAuditStatus(Long id, String status) {
        //1.1 审核商品
        Goods goods = new Goods();
        goods.setId(id);
        goods.setAuditStatus(status);
        int rows = goodsMapper.updateGoods(goods);

        //1.2 修改tb_item表中的数据
        Item item = new Item();
        item.setGoodsId(id);
        item.setStatus("1");        // 代表审核通过
        itemMapper.updateItemByGoodsId(item);

        //1.3 根据goodsid在tb_item中查询出经过修改后的item数据
        Item item2 = new Item();
        item2.setGoodsId(id);
        List<Item> itemList = itemMapper.selectItemList(item2);

        //1.4 发送消息,携带数据
        rabbitTemplate.convertAndSend("hzit-auditgoods", JSON.toJSONString(itemList));
        return rows;
    }
}

